import re
import function.operate_database as fd
import function.init_page_config as fi
import function.identified_login_count  as fident
import streamlit as st
import time

def login():
    fi.init()
    st.title("登录")
    username=st.text_input("请输入用户名")
    password = st.text_input("请输入密码",type="password")
    loginflag=st.button("登录")
    registerflag=st.button("没有账号，点击注册")
    dict=fident.get_session_state()
    if dict["logupNum"]:
        st.write(f"是否用当前用户{dict["username"]}登录？")
        tflag=st.button("确认")
        fflag=st.button("取消")
        if tflag:
            print(dict)
            username = dict["username"]
            password = dict["password"]
        if fflag:
            fident.set_session_state(0)
    if loginflag:
        if username and password :
            # 2、校验用户名的长度是否为11位 并且是否为手机号 正则表达式
            if re.match('^(13|15|17|18|19)[0-9]{9}$', username):
                # 3、查看两次密码是否一致 并且密码长度必须大于等于8位
                if password and len(password) >= 8:
                    # 4、查询数据库是否有重复信息
                    if not fd.query_user_no_exists(username):
                        result=fd.query_user(username)
                        if result["password"]==password :
                            st.success("登录成功")
                            time.sleep(2)
                            fident.set_session_state(username,password,1)
                            st.session_state.user_id = result["user_id"]
                            st.session_state.user_name = result["username"]
                            st.switch_page("pages/chatbot.py")
                        else:
                            st.error("密码错误！")
                    else:
                        st.error("用户不存在！")
                else:
                    st.error("密码输入格式错误")
            else:
                st.error("账号格式不正确")

        else:
            st.error("请填写登录信息！")
    if registerflag:
        st.switch_page("pages/register.py")
login()